package hdtheap;

/**
 *
 * @author Pingus
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class InterfazAlumnat extends JFrame implements ActionListener {

        /**
         * Listas en las que se despliegan los elementos ordenados de diferentes formas.
         */
        private JList listaInicial, listaCarnet, listaFecha;
 
        public InterfazAlumnat() throws AlumnoParseado{
                try{
                     UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());     
                }catch(Exception e){}
                setTitle( "Alumnator - Una implementación de Heaps" );
                setSize(600, 600);
                setDefaultCloseOperation( DISPOSE_ON_CLOSE );
                setLayout( new GridLayout( 1,3 ) );
                JButton boton = new JButton( "Seleccionar archivo" );
                boton.addActionListener( this );
               
                
                listaInicial = new JList();
           
                // listaInicial.setListData( arreglo );
                listaCarnet = new JList();
                // listaCarnet.setListData( arreglo );
                listaFecha = new JList();
                // listaFecha.setListData( arreglo );
                
                add( listaInicial );
                add( listaCarnet );
                add( listaFecha );
                
                JFileChooser fc = new JFileChooser();
                fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
                int returnVal = fc.showOpenDialog(this);

        if (returnVal == JFileChooser.APPROVE_OPTION) {
                String path = fc.getSelectedFile().getAbsolutePath();
                try {
                        Alumnator alumnator = new Alumnator( path );
                        listaInicial.setListData( alumnator.darAlumnos().toArray() );
                        listaCarnet.setListData( alumnator.darOrdenadosPorCarnet().toArray() );
                        listaFecha.setListData( alumnator.darOrdenadosPorFecha().toArray() );
                } catch (AlumnoParseado e) {
                        JOptionPane.showMessageDialog(this, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
                        dispose();
                } catch (Exception e){
                        JOptionPane.showMessageDialog(this, "El contenido del archivo no es válido.", "Error", JOptionPane.ERROR_MESSAGE);
                        dispose();
                }
        }
        }
   
        @Override
        public void actionPerformed(ActionEvent arg0) {
                JFileChooser fc = new JFileChooser();
                fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
                int returnVal = fc.showOpenDialog(this);

        if (returnVal == JFileChooser.APPROVE_OPTION) {
                String path = fc.getSelectedFile().getAbsolutePath();
                try {
                        Alumnator alumnator = new Alumnator( path );
                        listaInicial.setListData( alumnator.darAlumnos().toArray() );
                        listaCarnet.setListData( alumnator.darOrdenadosPorCarnet().toArray() );
                        listaFecha.setListData( alumnator.darOrdenadosPorFecha().toArray() );
                } catch (AlumnoParseado e) {
                        JOptionPane.showMessageDialog(this, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
                }
        }
        }
        

        /**
         * @param args
         */
        public static void main(String[] args) {
                try {
                        new InterfazAlumnat().setVisible( true );
                } catch (AlumnoParseado e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
        }

}
